/**
 * 题目:
 * 模拟红绿黄灯亮
 * 
 * 描述:
 * 红灯亮3s => 绿灯亮1s => 黄灯亮2s => 红灯亮3s  => 绿灯亮1s => ...
 * 
 * 打印模拟:
 * 打印red => 3s后打印green => 1s后打印yellow => 2s后打印red => ...
*/

// 模拟红灯亮
function red() {
  console.log('red')
}

// 模拟绿灯亮
function green() {
  console.log('green')
}

// 模拟黄灯亮
function yellow() {
  console.log('yellow')
}

/**
 * sleep：延时执行异步回调
 * @param {Number} 延迟执行时间
*/
function sleep(timer) {
  return new Promise(resolve => setTimeout(resolve, timer))
}

// 利用async+await实现循环打印
async function task() {
  while(1) {
    red()
    await sleep(3000)
    green()
    await sleep(2000)
    yellow()
    await sleep(2000)
  }
}

task()

// 测试
// red
// 3s后打印: green
// 2s后打印: yellow
// 1s后打印: red
// ...



